弱點分析 (Vulnerability Assessment) 其實是安全測試 (Penetration Tests) 的前戲。弱點由「人」與「事」組成,「事」的部分包括靜態分析、動態分析、業務分析等,「人」的部分包括「專案團隊成員」、「專案級別風險」等。
我想先以一位安總在米國的同事開頭,因為今天的內容不斷讓安總想起她。她的故事仍時常令安總振奮,我們估且稱她為「米國慈禧」吧。
凡是在米國的關鍵客人或高風險專案,我們都會交給慈禧,慈禧真有她的一套本事。她的嗓音能夠跨越太平洋、透過國際電話,將遠在台灣會議室的每一個人耳朵震聾。
喔對了,什麼米國、什麼慈禧的,根本是安總為了說故事而虛構的人物,各位看倌就別當真了。話說慈禧那一天怒了,她把大陸、台灣的關鍵人物全部集中在一起。
1. A,我知道你是新來的,但我還是要罵你,What are you F****** doing?
2. B,你,可以說你沒能力,但你不可以不說話!
3. 慈禧打了一個噴嚏:「哈啾!」
4. C 是我們其中一個事業頭子,他緊張地關心道:「慈禧,Please take care。」
5. 慈禧回答:「C,我為了這個事業,每天只睡四小時,我要怎麼 take care!」
我們先提供一個 PowerShell 腳本來分析原始程式碼樹,以下是「統計檔案行數」範例。程式行數是一種最簡單的程式度量,雖然不能提供豐富的語意資訊,但不失為很好的分析切入點。
$root = Get-Location
"Folder 'tFile'LineCount"
Get-ChildItem *.cs -Recurse | %{
$folderName = $_.DirectoryName.Substring($root.Path.Length);
$lineCount = (Get-Content $_.FullName).Length
"$folderName 't$($_.Name)'t$lineCount"
}
在分析一個資訊系統時,有一些程式閱讀的基本實踐:
污染傳播分析是一種基於控制流程和資料流程的程式分析方法。它重點關注資料流程,透過分析資料從何處進入軟體和資料如何何在軟體中傳播,來發掘隱藏的漏洞。
污染傳播分析是一種靜態程式檢查工具的基礎,在軟體安全領域得到成功的應用,能夠發現許多動態測試難以暴露的問題。污染傳播的核心隱喻是「汙染」和「傳播」。所謂「汙染」是指被污染的資料,其源頭通常是包含惡意資料的攻擊性輸入。所謂「傳播」是指軟體沒能過濾掉被污染的資料,讓這些惡意資料在軟體中傳播,最終導致軟體故障。
資料來源:
https://raw.githubusercontent.com/younggege/photos/77065cc752f4055b79d9eedb2a149b0a5428cf0c/taint.png
由此可知,靜態分析與動態分析,最重要的用途目的不是程式審查 (過程所發現的缺陷是副產品),而是發現所有的測試物件,以避免測試遺漏。在此基礎上,分析待測物件,構築有針對性的測試想法,提高測試執行的效率,才是動靜分析的基本出發點。如果動與靜,分別是兩種武功發展的方向,那麼您是靜之武者,還是動之武者呢?(兼一梗)
話說米國慈禧手下,除了有一群關鍵客人照顧經理外,還有一個測試團隊,這些人在產品發布後,會陸續收到一些來自用戶的缺陷報告。這個測試團隊的典型任務歸納如下:
經過一段時間的「把玩」,他能夠較完整地理解軟體的能力,並對軟體如何解決使用者的問題形成自己的見解。
如果問安總,這世界上什麼東西最好玩?我會說,人玩人最好玩;有的人玩十個人,有的人玩 2300 萬人。有時我會覺得,自己也像是慈禧手中的「玩物」,一段不知名的記憶忽然襲來:
安總初次到了米國西岸,滿心期待能見到慈禧,但是慈禧在米國中部,還有一兩天才會回來。於是安總只能繼續行程,輾轉到了米國東岸,落地已是半夜兩點。
6. 出了機場,寒風凜冽,夜色無光,偌大的小機場上四下無人,寂靜極了。
7. 我和另一位同事 S 疑惑著該如何到達旅館,慈禧來訊息了:「打給飯店,會有接駁車。」
8. 順利到達飯店,解放了行李,我和 S 忽然鬆懈的心情使得肚子餓了,慈禧來訊息了:「一樓走到底左轉,有一個販賣機,裡面有賣泡麵。」
9. 走到了販賣機、看到了無比熟悉的泡麵,心裡不禁暖和起來,才想起我們根本沒有換零錢,慈禧來訊息了:「可以刷卡。」
10. 驚,我們仔細一看,真的有一條細細的卡縫,我們順利完成了交易,上樓,匆匆填飽了肚子便沉沉入睡了。
11. 早上醒來,我和 S 才想起自己身處另一半球的米國,應該要買點紀念品回去才划算,慈禧來訊息了:「想買紀念品嗎?回頭我請 P 找一天帶你們去。」
這就是我深愛的慈禧,操縱人心的慈禧,精準無比的慈禧,狂風怒吼的慈禧,我們在米國完美布局的慈禧。
慈禧她瞭解團隊組織、瞭解團隊成員,她瞭解專案中所提交的缺陷、數目和分布,她知道誰有真正的解決方案,她知道專案級別的風險和失敗模式,並且做出預防與控制。她是慈禧,名符其實的慈禧。
幾年前的禮拜四,其中一個事業頭要找我談精實六標準差和當年的平台軟體。看來安總需要勇敢創造自己的奇蹟了。今天又是個痛苦的讀書日,每當安總最痛苦的時候,也就是我生命最璀璨輝煌的時候,生命熠熠生輝、閃閃發亮。
《精實六標準差》